package logicaBancoDeDados;

import classes.Categoria;
import classes.Conector;
import java.sql.*;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

public class ConectaCategorias {
    ArrayList<Categoria> listaCategoria = new ArrayList<Categoria>();
    public Conector conect = new Conector();
    public PreparedStatement prest = null;
    public String sql = null;
    public ResultSet rs = null;
    public ConectaCategorias(){
        
    }
    
      public ArrayList<Categoria> listaTodasCategorias() {
        sql = "select * from categorias";
        try {
            prest = conect.conn.prepareCall(sql);
            rs = prest.executeQuery();
            while (rs.next()) {
                Categoria categoria = new Categoria();
                categoria.setId(rs.getInt("id"));
                categoria.setCategoria(rs.getString("categoria"));
                listaCategoria.add(categoria);
            }
            return listaCategoria;
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(null, e);
        }


        return listaCategoria;
    }

    public void insere(Categoria categoria) {
        try {
            if (isCadastrada(categoria) != true) {
                sql = "INSERT INTO categorias (categoria) VALUES (?)";
                prest = conect.conn.prepareStatement(sql);
                prest.setString(1, categoria.getCategoria());
                prest.executeUpdate();
                prest.close();
            } else {
                JOptionPane.showMessageDialog(null, "Categoria já cadastrada");
            }
        } catch (SQLException e) {
        }
    }

    public void remove(Categoria categoria) {
        try {
            sql = "delete from categorias where id = ?";
            prest = conect.conn.prepareStatement(sql);
            prest.setInt(1, categoria.getId());
            prest.executeUpdate();
            prest.close();
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(null, "Erro ao remover categoria");
        }
    }

    public void altera(Categoria categoria) {
        try {
            if (!isCadastrada(categoria)) {
                sql = "UPDATE categorias set categoria = ? where id = ?";
                prest = conect.conn.prepareStatement(sql);
                prest.setString(1, categoria.getCategoria());
                prest.setInt(2, categoria.getId());
                prest.executeUpdate();
                rs.close();
                prest.close();
            } else {
                JOptionPane.showMessageDialog(null, "Categoria existente");
            }
        } catch (SQLException ex) {
            Logger.getLogger(ConectaProdutos.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public boolean isCadastrada(Categoria categoria) {
        boolean cond = false;
        try {
            sql = "select * from categorias where categoria = ?";
            prest = conect.conn.prepareStatement(sql);
            prest.setString(1, categoria.getCategoria());
            rs = prest.executeQuery();
            if (rs.next()) {
                cond = true;
                if(categoria.getId() == rs.getInt("id")){
                    cond = false;
                }
            }
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(null, "Erro ao consultar");
        }
        return cond;
    }

}
